import {login,getOrderNum,checkUserName,loadUserMsg,loginByAccount} from '../../api/api.js';
import {pGetUnReadMsg,getUnReadMsg} from '../utils/chat.js';
import {pSetBadge} from '../utils/websocket.js';
import {findNewCommentReply,addPhone,checkCode,sendCode,getImgCode,checkRegister} from '../../api/api.js';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    //登录页面的用户名和密码
    username:"",
    password:"",


    showLoginPanel:false,//控制登录页面是不是显示
    //输入的图形验证码
    inputImgCode:"",
    dotNum:"",
    userName:"",//第一次注册需要完善用户名
    userNameE:"",
    orderNum:0,
    //获取图形验证码放在这个地方
    imgCode:"5688",
    show:false,//控制手机号码弹出框的显示和隐藏
    phoneNum:"",//电话号码
    psd:"",//用户注册填写的密码
    checkFlag:false,
    sms:"",//验证码
    phoneNumErrorMsg:"",//手机号码输入错误提示信息
    msgNum:false,
    userinfo:false,
    timeFlag:"",
    userData:{},
    awaitCode:"",//验证码倒计时
     // 动态计算小程序的返回按钮距离左边的距离
    // 窗口宽度 - 胶囊按钮的右边距离窗口左边的距离
    navHeight:wx.getMenuButtonBoundingClientRect().top,
    navLeft: wx.getSystemInfoSync().windowWidth - wx.getMenuButtonBoundingClientRect().right

  },




  
  //输入用户
  inputUsername(e){
    console.log(e,"输入用户名=====")
    this.setData({
      username:e.detail.value
    })
},

// 输入密码
inputPwd(e){
    console.log(e,"输入密码");
    this.setData({
      password:e.detail.value
    })
},




  /**
   * 生命周期函数--监听页面加载
   */
  onLoad:function(options){
    // 获取评论提醒
    this.getRecommend();
    //进入页面后判断userinfo 是不是存在于本地
    //不存在字段设置为false，这样就会出现一个登录按钮
    //否则不会
    //用户点击登录按钮登录
    // var userinfo = wx.getStorageSync('Yuserinfo');
    var userData = wx.getStorageSync('yUserData');
    if(userData){
        console.log("不是空")
        this.setData({
           userData:userData
        })
    }else{
      console.log("是空");
      this.setData({
        userData:false
      })
    }
  },

  onShow: function() {


      
    var userData = wx.getStorageSync('yUserData');
    console.log(userData,"用户数据==============================")
    if(userData.id){
        // 说明已经登录过了，更新用户资料到内存
        this.setData({
            userData:userData
        })
    }


      //进入页面之后就要获取图形验证码,
      getImgCode().then(res=>{
          console.log(res,"获取到图形验证码----------")
          this.setData({
            imgCode:res.data.data
          })
      })
      
      // this.setDotNum();
      //设置tabbar
      // pSetBadge();
      //获取订单数量
      this.getOrderNumW();
  },


  toLoginPage(){
     this.setData({
        showLoginPanel:true
     })
    //隐藏tabbar
     wx.hideTabBar({});
  },


  // 登录成功之后获取用户资料
   getUserMsgW(){
        // 微信登录成功之后关闭面板
        this.setData({
          showLoginPanel:false,
        //把返回的信息保存到内内存中
        })
           
        //调用登录app 的初始化方法。
        getApp().init();
        loadUserMsg().then(res=>{
          console.log(res,"===================================获取用户资料=======")
          this.setData({
              userData:res.data.data
          })
          //用户信息放到本地。
          wx.setStorageSync('yUserData',res.data.data);

        })
   },

  
  getOrderNumW(){
    console.log("获取订单数量")
    getOrderNum().then(res=>{
        console.log("获取到订单数量",res);
        this.setData({
            orderNum:res.data.data
        })
    })
  }, 

// //输入用户名的回调函数 
// inputUserName(e){
//          console.log(e.detail,"输入用户名==============")
//          checkUserName(e.detail).then(res=>{
//              console.log(res,"验证结果==========")
//              if(res.data.data == false){
//                  this.setData({
//                     userNameE:"用户名已经被占用"
//                  })
//              }else{
//                 this.setData({
//                   userNameE:"",
//                   userName:e.detail
//                 })
//              }
//          })
//   },

  



  changeData(){
     console.log("修改个人资料===================");
     wx.navigateTo({
       url:'/pages/changeUserData/changeUserData',
     })
  },

  
  //这个是跳入到这个页面的时候获取就可以了
  setDotNum(){
     //获取平台未读消息的数量
     getUnReadMsg().then(res=>{
      console.log(res,"获取平台未读消息的数量----------------")
      let num = res.data.data['platform'];
      if(num){
         this.setData({
           dotNum:num
         })
      }else{
         this.setData({
           dotNum:""
         })
      }
      console.log(num,"--------------------平台未读消息的数量---------");
     //tabbar设置未读消息
     // 列表设置未读消息数量
   })
  },

  


  //点击图形验证码获取下一张
  nextImg(){
    getImgCode().then(res=>{
      console.log(res,"获取到图形验证码----------")
      this.setData({
        imgCode:res.data.data
      })
    })
  },

  


  submit(){
     let that = this;
      console.log("提交手机号码和和密码")
      if(this.data.psd.length<1){
          wx.showToast({
            title:'密码不能为空哦',
            icon:"none"
          })
          return;
      }
      

      if(this.data.sms.length<4){
          wx.showToast({
            title: '验证码长度不正确',
            icon:"none"
          })
          return;
      }


      // //验证用户名是不是空
      // if(this.data.userName.length<2){
      //       wx.showToast({
      //         title: '用户名不能为空哦',
      //         icon:"none"
      //       })  

      //       return;
      // }
      
      // //用户名验证不正确
      // if(this.data.userNameE){
      //   console.log("用户名验证不通过===========");

      //   return;
      // }

      //获取验证码，验证验证码
      let code = this.data.sms;
      let phone = this.data.phoneNum;
      //验证验证码是不是正确
      checkCode(phone,code).then(res=>{
          console.log(res,"验证验证码的回调函数-------------");
          if(res.data.code == 200){
            //获取到本地信息存储发送给服务端
              let userinfo = wx.getStorageSync('temUserinfo');
              let data = {
                psd:this.data.psd,
                phone:this.data.phoneNum,
                // userName:this.data.userName,
                openId:wx.getStorageSync('temLoginInfo').openid
              }
             //合并两个对象
              data = Object.assign(userinfo,data);
              console.log(data,"修改用户信息的data");
            //修改用户信息
            addPhone(data).then(res=>{
                console.log(res,"添加手机号码-------------")
                if(res.data.code == 200){
                      wx.setStorageSync("loginInfo",wx.getStorageSync('temLoginInfo'));
                      //本地存储
                      wx.setStorageSync('Yuserinfo',wx.getStorageSync('temYuserinfo'));
                      //把用户详细信息放到内存中去，代表登录成功
                      console.log(wx.getStorageSync('temYuserinfo'),"添加手机号码成功之后---")
                      that.setData({
                          userinfo:wx.getStorageSync('temYuserinfo'),
                          show:false
                      })
                 


                      // 获取用户信息放到页面上
                      that.getUserMsgW();
                      
                      console.log("登录成功"+wx.getStorageSync("loginInfo"));
                }else{
                      wx.showToast({
                        title:'新注册失败，请联系管理员',
                      })
                }
            })
          }else{
              wx.showToast({
                title: '验证码输入错误',
                icon:"none"
              })
          }
      })
  },

  //发送验证码
  sendCode(){
      //判断距离上次发送验证码是不是超过了60s
      if(this.data.awaitCode != ""){
          //那么正在计时
          return;
      }
      //根据errormsg 判断当前手机号码是不是验证通过了。
      if(this.data.checkFlag == true){
          //手机号码通过了验证
          console.log("发送验证码")
          sendCode(this.data.phoneNum,this.data.imgCode).then(res=>{
              console.log(res,"发送验证码的回调函数");
              if(res.data.code == 200){
                    //添加一个倒计时
                    let time = 60;
                    let codeInterval = setInterval(() => {
                        console.log(time,"time-----------")
                        if(time < 0){
                            this.setData({
                               awaitCode:"",
                            })
                            clearInterval(codeInterval)
                        }else{
                            console.log("定时器-----------------")
                            this.setData({
                                awaitCode:`(${time--}s)`
                            })
                        }
                    },1000);
              }else{
                  wx.showToast({
                    title:'验证码发送失败!',
                    icon:"none"
                  })
              }
          })


      }else{
          console.log("手机验证不通过，不发送验证码");
          this.setData({
            phoneNumErrorMsg:"手机号码格式不正确！",
          })

      }

  },


  // 输入图形验证码
  inputImgCode(e){
       this.setData({
          inputImgCode:e.detail
       })
       console.log(e.detail,"输入图形验证码---------");
  },

  // 输入短信验证码
  inputSms(e){
    console.log(e.detail,"输入验证码")
    this.setData({
       sms:e.detail
    })
  },
  
  // inputpsd
  inputPsd(e){
      console.log(e.detail)
      this.setData({
         psd:e.detail
      })
  },
   

  // 合伙人
  toPartner(){
    //判断你是不是已经登录了
     console.log("成为合伙人============================");
     let phone = wx.getStorageSync('loginInfo').phone;
     console.log(phone,"==============")
     if(phone){ 
      console.log(phone,"==============")
        checkRegister(phone).then(res=>{
            console.log(res,"验证用户是不是已经注册了")
             if(res.data.data.status == 0){
                 console.log("正在审核============");
                 wx.navigateTo({
                   url: '/pages/agent/applySuccess/applySuccess',
                 }) 

                   //代理人信息存储到本地
                   wx.setStorageSync('agentInfo',res.data.data);
             }else if(res.data.data.status == 1){
                  console.log("注册成功的用户")
                  wx.navigateTo({
                    url: '/pages/agent/index/index',
                  })
                  //代理人信息存储到本地
                  wx.setStorageSync('agentInfo',res.data.data);
             }else{
                  console.log('用户没有注册过')
                  wx.navigateTo({
                    url: '/pages/agent/register/register',
                  })
             }
        })
     }else{
        wx.showToast({
          title: '没有登录哦！',
          icon:"none"
        })
     }


    //  wx.navigateTo({
    //    url:'/pages/agent',
    //  })

  },





  // //输入用户名
  // inputUserName(e){
  //    this.setData({
  //       userName:e.detail
  //    })
  // },

  //输入手机号码的方法
  inputPhone(e){
       //验证手机号码是不是正确
       let result = this.checkPhone(e.detail);
       if(result){
           console.log("验证通过。。。。");
           this.setData({
             phoneNum:e.detail,
             phoneNumErrorMsg:"",
             checkFlag:true
           })
       }else{
           console.log("验证不通过。。。。")
           this.setData({
            phoneNumErrorMsg:"手机号码格式不正确！",
            checkFlag:false
          })
       }
  },

  checkPhone(data) {
      var myreg=/^[1][3,4,5,7,8][0-9]{9}$/;
      return myreg.test(data)
  },


  //商家加盟
  joinIn(){
      wx.navigateTo({
        url: '/pages/joinIn/joinIn',
      })
  },

   
  //  去商家后天
  toStoreBackstage(){
      wx.navigateTo({
        url: '/pages/Backstage/Backstage',
      }) 
  },    


  //点击全部订单按钮，去订单页面
  toOrder(e){
      let idx = e.currentTarget.dataset.idx;
      let openId = wx.getStorageSync("loginInfo").openid;
      if(openId){
          wx.navigateTo({
             url:'/pages/orderList/orderList?checked='+idx,
          })
          console.log("getorder");
      }else{
         wx.showToast({
           title:'您还没有登录哦',
           icon:'none'
         })
      }
  },


  
accountLogin(userinfo){
  console.log("点击登录按钮=====");
  let phone = this.data.username;
  //判断用户名
  if(!(/^1[3456789]\d{9}$/.test(phone))){ 
    //验证通过
      //验证失败
      wx.showToast({
        title:'手机号码输入不正确',
        icon:"none"
      })
      return;
  }

  let pwd = this.data.password;
  if(pwd.length<3){
        wx.showToast({
          title:'密码输入长度不正确',
          icon:"none"
        })

        return;
  }


//       id;
//  userName; //真实姓名
//  nickName;//微信昵称
//  gender;//性别0女1男
//  phone; //电话（帐号）
//  email; //邮箱
//  openId;//微信用户唯一标识
//  headImgUrl;//头像地址
//  addDate;//创建时间
//  jsCode;//登陆前端传code
//  psd;／／密码
//  pcHeadPic;//PC端用户头像
//   resume;//个人简介


  let data = {
      phone:this.data.username,
      psd:this.data.password,
  }

  data = Object.assign(data,userinfo)
  console.log(data,"登录数据")

  loginByAccount(data) .then(res=>{
      console.log(res,"登录=============")
      if(res.data.code == 200){
         this.setData({
             showLoginPanel:false,
            //把返回的信息保存到内内存中
         })

         wx.setStorageSync("loginInfo",wx.getStorageSync('temLoginInfo'));
         //本地存储
         wx.setStorageSync('Yuserinfo',wx.getStorageSync('temYuserinfo'));
         //把用户详细信息放到内存中去，代表登录成功
        //  console.log(wx.getStorageSync('temYuserinfo'),"添加手机号码成功之后---")
         this.setData({
             userinfo:wx.getStorageSync('temYuserinfo'),
            //  show:false
         })

         this.getUserMsgW();
    
      }else{
          wx.showToast({
            title:res.data.msg,
            icon:'none'
          })
      }
  })

   
},

  
  //点击登录获取用户信息
  userInfo(e){  
    let that = this;
    // 表示已经登录了
    // 登录成功之后把e.detail.userInfo 放入到内存当中去。
    // 把这个字段放入本地，填写手机号码的时候把这个上传给后台。
    var userinfo = { 
       nickName:e.detail.userInfo.nickName,//微信昵称
       gender:e.detail.userInfo.gender,//性别0女1男
       headImgUrl:e.detail.userInfo.avatarUrl//头像地址
    }

    wx.setStorageSync('temUserinfo',userinfo)
    console.log("微信发给我的用户信息------",e)
    //获取code
    wx.login({
        success(res){
            console.log(res,"登录回调");
            //给userinfo 添加一个字段
            userinfo.jsCode = res.code;
            //发送给后端存储
            console.log("登录信息",userinfo);
            login(userinfo).then(res=>{ 
              console.log(res,"登录回调--------------")
              if(res.data.code === 200){
                  // 本地暂存
                   wx.setStorageSync("temLoginInfo",res.data.data);
                  //本地存储,登录成功之后放入到内存当中去。
                   wx.setStorageSync('temYuserinfo', e.detail.userInfo)
                  // 这里要等企业服务器成功返回数据之后才会
                  // 才把做相应的操作，不然的话，本地有userinfo
                  // 然而并没有openid
                  //登录成功做了什么？
                  // 1 获取到openid 和用户信息，然后存储到本地
                  // 2 进入页面的时候检查本地是不是存在这些信息，如果存在这些信息那么
                  //  就说明已经登录成功了。
                  console.log(res.data.data,"获取的logininfo")
                  let result = res.data.data;
                  let loginFlag = e.currentTarget.dataset.flag;
                  //判断是哪种登录方式
                  if(loginFlag == 'account'){
                      userinfo.openId = result.openid;
                      //账号密码登录
                      that.accountLogin(userinfo)
                  }else{
                          // 微信登录
                          // 判断有没有电话号码
                          if(result.phone == null||result.phone==""){
                            // 弹出资料框补全资料 
                            // 暂时把返回的数据保存到内存中，因为submit 的时候会用到
                            // 又不能直接保存到本地，因为一旦保存到本地就意味着登录成功了。
                            // 然而目前的状态是需要填写手机号码，如果不填写手机号码那么意味着登录失败，不让用户
                            // 暂时存储一下，方便后面拿出来使用
                            // 登录.
                            console.log(res.data.data,"存储在内存中logininfo--------------")
                            that.setData({
                                show:true,
                                showLoginPanel:false
                            })
                            wx.showTabBar();
                            console.log("电话是空需要补全===")
                        }else{
                              //不是第一次登录直接保存信息就可以了
                              wx.setStorageSync("loginInfo",res.data.data);
                              //本地存储
                              wx.setStorageSync('Yuserinfo', e.detail)
                              //如果不是空的话放到内存中
                              console.log("电话号码不是空==============",res)
                              if(e.detail.userInfo){
                                  console.log("userinfo 存在");
                                  that.setData({
                                    userinfo: e.detail.userInfo
                                  })
                            // 获取用户信息放到页面上
                            that.getUserMsgW();

                              }else{
                                  wx.showToast({
                                    title: '系统异常，请联系管理员',
                                  })
                              }
                              console.log("登录成功"+wx.getStorageSync("loginInfo"));
                        }
                  }
               }else{
                   console.log("登录失败")
               }
            })
        }
    })
  },


  // 登录成功之后

  //打开收货地址列表页面
  openAddress(){
      let loginInfo = wx.getStorageSync("loginInfo");
      console.log(loginInfo)
      // 判断是不是已经登录了
      if(loginInfo.openid){
          wx.navigateTo({
            url: '/pages/addressList/addressList',
          })
      }else{
        wx.showToast({
          icon:'none',
          title: '请先登录哦 ~',
        })
      }
  },


  //打开商品收藏页面
  toFavorite(){
     console.log("000");
    // 根据openid判断是不是已经登录了
    let openid = wx.getStorageSync('loginInfo').openid;
    console.log("openid"+openid);
    if(openid){
        // 跳转页面
        wx.navigateTo({
          url: '/pages/favorite/favorite',
        })
    }else{
        // 弹窗提示
        wx.showToast({
          title: '您还没有登录哦 ~',
          icon:'none'
        })

    }
     
  },


  //去店铺收藏页面
  toCollectStore(){
      let openId = wx.getStorageSync('loginInfo').openid;
      console.log(openId)
      // 判断是不是登录了
      if(openId){
          wx.navigateTo({
            url: '/pages/storeFavourite/storeFavourite',
          })
      }else{
         wx.showToast({
           title: '请先登录哦',
           icon:'none'
         })
      }
  },

  //去账单页面
  toBill(){
      console.log(11)
      let openId = wx.getStorageSync('loginInfo').openid;
      if(openId){
         wx.navigateTo({
           url: '/pages/bill/bill',
         })
      }else{
          wx.showToast({
            title: '您还没有登录哦',
            icon:'none'
          })
      }


  },



  getRecommend(){
    let openId =  wx.getStorageSync('loginInfo').openid;
    findNewCommentReply(openId).then(res=>{
         console.log(res,"获取到消息提醒---------------------")
         if(res.data.data!=null){
             this.setData({
                msgNum:true
             })
         }
    })
  },


  toRecommend(){
      console.log("消息提醒页面");
      wx.navigateTo({
        url: '/pages/recommend/recommend',
      })
  },


  // 弹出框的展示和关闭
  showPopup() {
    this.setData({ show: true });
  },

  onClose() {
    this.setData({ 
      show: false,
      showLoginPanel:false
     });
  },




  


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },


  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})